﻿using System;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Contabil.Communication.Bovespa.Contabil.ContaContabilFaturamento;

namespace Sinacor.UI.Bovespa.Contabil.Communication.Translator.ModelToDataContract
{
    /// <summary>
    /// Translator.ModelToDataContract Class - ContaContabilFaturamento
    /// </summary>
    public class ContaContabilFaturamento
    {
        #region ToContaContabilFaturamentoRequest

        public ContaContabilFaturamentoRequest ToContaContabilFaturamentoRequest(Model.ContaContabilFaturamento from)
        {
            if (from == null) return null;

            return new ContaContabilFaturamentoRequest
            {
                CodigoBolsa = from.CodigoBolsa,
                CodigoEventoContabil = from.CodigoEventoContabil,
                CodigoGrupoContabil = from.CodigoGrupoContabil,
                CodigoHistoricoCredito = from.CodigoHistoricoCredito,
                CodigoHistoricoDebito = from.CodigoHistoricoDebito,
                CodigoHistoricoEstorno = from.CodigoHistoricoEstorno,
                CodigoMunicipio = from.CodigoMunicipio,
                CodigoResumidoCredito = from.CodigoResumidoCredito,
                CodigoResumidoDebito = from.CodigoResumidoDebito,
                ContaCredito = from.ContaCredito,
                ContaDebito = from.ContaDebito,
                DescricaoBolsa = from.DescricaoBolsa,
                DescricaoEventoContabil = from.DescricaoEventoContabil,
                DescricaoGrupoContabil = from.DescricaoGrupoContabil,
                DescricaoMunicipio = from.DescricaoMunicipio,
                DigitoHistoricoCredito = from.DigitoHistoricoCredito,
                DigitoHistoricoDebito = from.DigitoHistoricoDebito,
                DigitoHistoricoEstorno = from.DigitoHistoricoEstorno,
                DigitoResumidoCredito = from.DigitoResumidoCredito,
                DigitoResumidoDebito = from.DigitoResumidoDebito
            };
        }

        public List<ContaContabilFaturamentoRequest> ToContaContabilFaturamentoRequest(ModelCollection<Model.ContaContabilFaturamento> from)
        {
            if (from == null) return null;

            List<ContaContabilFaturamentoRequest> request = new List<ContaContabilFaturamentoRequest>();

            foreach (Model.ContaContabilFaturamento item in from)
            {
                request.Add(new ContaContabilFaturamentoRequest
                {
                    CodigoBolsa = item.CodigoBolsa,
                    CodigoEventoContabil = item.CodigoEventoContabil,
                    CodigoGrupoContabil = item.CodigoGrupoContabil,
                    CodigoHistoricoCredito = item.CodigoHistoricoCredito,
                    CodigoHistoricoDebito = item.CodigoHistoricoDebito,
                    CodigoHistoricoEstorno = item.CodigoHistoricoEstorno,
                    CodigoMunicipio = item.CodigoMunicipio,
                    CodigoResumidoCredito = item.CodigoResumidoCredito,
                    CodigoResumidoDebito = item.CodigoResumidoDebito,
                    ContaCredito = item.ContaCredito,
                    ContaDebito = item.ContaDebito,
                    DescricaoBolsa = item.DescricaoBolsa,
                    DescricaoEventoContabil = item.DescricaoEventoContabil,
                    DescricaoGrupoContabil = item.DescricaoGrupoContabil,
                    DescricaoMunicipio = item.DescricaoMunicipio,
                    DigitoHistoricoCredito = item.DigitoHistoricoCredito,
                    DigitoHistoricoDebito = item.DigitoHistoricoDebito,
                    DigitoHistoricoEstorno = item.DigitoHistoricoEstorno,
                    DigitoResumidoCredito = item.DigitoResumidoCredito,
                    DigitoResumidoDebito = item.DigitoResumidoDebito
                });
            }
            return request;
        }

        #endregion

        #region ToFiltroContaContabilFaturamentoChaveRequest

        public FiltroContaContabilFaturamentoChaveRequest ToFiltroContaContabilFaturamentoChaveRequest(Model.Parameter.FiltroContaContabilFaturamentoChave from)
        {
            if (from == null) return null;

            return new FiltroContaContabilFaturamentoChaveRequest
            {
                CodigoBolsa = from.CodigoBolsa,
                CodigoEventoContabil = from.CodigoEventoContabil,
                CodigoGrupoContabil = from.CodigoGrupoContabil,
                CodigoMunicipio = from.CodigoMunicipio
            };
        }

        public List<FiltroContaContabilFaturamentoChaveRequest> ToFiltroContaContabilFaturamentoChaveRequest(ModelCollection<Model.Parameter.FiltroContaContabilFaturamentoChave> from)
        {
            if (from == null) return null;

            List<FiltroContaContabilFaturamentoChaveRequest> request = new List<FiltroContaContabilFaturamentoChaveRequest>();

            foreach (Model.Parameter.FiltroContaContabilFaturamentoChave item in from)
            {
                request.Add(new FiltroContaContabilFaturamentoChaveRequest
                {
                    CodigoBolsa = item.CodigoBolsa,
                    CodigoEventoContabil = item.CodigoEventoContabil,
                    CodigoGrupoContabil = item.CodigoGrupoContabil,
                    CodigoMunicipio = item.CodigoMunicipio
                });
            }
            return request;
        }

        #endregion

        #region ToFiltroContaContabilFaturamentoRequest

        public FiltroContaContabilFaturamentoRequest ToFiltroContaContabilFaturamentoRequest(Model.Parameter.FiltroContaContabilFaturamento from)
        {
            if (from == null) return null;

            return new FiltroContaContabilFaturamentoRequest
            {
                CodigoBolsa = from.CodigoBolsa,
                CodigoEventoContabil = from.CodigoEventoContabil,
                CodigoGrupoContabil = from.CodigoGrupoContabil,
                CodigoMunicipio = from.CodigoMunicipio
            };
        }

        public List<FiltroContaContabilFaturamentoRequest> ToFiltroContaContabilFaturamentoRequest(ModelCollection<Model.Parameter.FiltroContaContabilFaturamento> from)
        {
            if (from == null) return null;

            List<FiltroContaContabilFaturamentoRequest> request = new List<FiltroContaContabilFaturamentoRequest>();

            foreach (Model.Parameter.FiltroContaContabilFaturamento item in from)
            {
                request.Add(new FiltroContaContabilFaturamentoRequest
                {
                    CodigoBolsa = item.CodigoBolsa,
                    CodigoEventoContabil = item.CodigoEventoContabil,
                    CodigoGrupoContabil = item.CodigoGrupoContabil,
                    CodigoMunicipio = item.CodigoMunicipio
                });
            }
            return request;
        }

        #endregion

        #region ToFiltroContaContabilFaturamentoChaveRequest

        public FiltroContaContabilFaturamentoChaveRequest ToFiltroContaContabilFaturamentoRequest(Model.Parameter.FiltroContaContabilFaturamentoChave from)
        {
            if (from == null) return null;

            return new FiltroContaContabilFaturamentoChaveRequest
            {
                CodigoBolsa = from.CodigoBolsa,
                CodigoEventoContabil = from.CodigoEventoContabil,
                CodigoGrupoContabil = from.CodigoGrupoContabil,
                CodigoMunicipio = from.CodigoMunicipio
            };
        }

        public List<FiltroContaContabilFaturamentoChaveRequest> ToFiltroContaContabilFaturamentoRequest(ModelCollection<Model.Parameter.FiltroContaContabilFaturamentoChave> from)
        {
            if (from == null) return null;

            List<FiltroContaContabilFaturamentoChaveRequest> request = new List<FiltroContaContabilFaturamentoChaveRequest>();

            foreach (Model.Parameter.FiltroContaContabilFaturamentoChave item in from)
            {
                request.Add(new FiltroContaContabilFaturamentoChaveRequest
                {
                    CodigoBolsa = item.CodigoBolsa,
                    CodigoEventoContabil = item.CodigoEventoContabil,
                    CodigoGrupoContabil = item.CodigoGrupoContabil,
                    CodigoMunicipio = item.CodigoMunicipio
                });
            }
            return request;
        }

        #endregion

        #region ToFiltroPlanoContaRequest

        public FiltroPlanoContaRequest ToFiltroPlanoContaRequest(Model.Parameter.FiltroPlanoConta from)
        {
            if (from == null) return null;

            return new FiltroPlanoContaRequest
            {
                CodigoConta = from.CodigoConta,
                CodigoResumidoConta = from.CodigoResumidoConta,
                DigitoResumidoConta = from.DigitoResumidoConta
            };
        }

        #endregion
    }
}
